/* eslint-disable no-console */

/**
 * 日志工具类 - 提供彩色控制台输出
 * @class Logger
 */
export class Logger {
  private static readonly colors = {
    reset: '\x1B[0m',
    red: '\x1B[31m',
    green: '\x1B[32m',
    yellow: '\x1B[33m',
    blue: '\x1B[34m',
    magenta: '\x1B[35m',
    cyan: '\x1B[36m',
    white: '\x1B[37m',
  }

  /**
   * 打印信息日志
   * @param {string} message - 日志消息
   * @param {string} [prefix] - 日志前缀
   */
  static info(message: string, prefix: string = 'INFO'): void {
    console.info(`[${this.colors.cyan}${prefix}${this.colors.reset}] ${message}`)
  }

  /**
   * 打印警告日志
   * @param {string} message - 日志消息
   * @param {string} [prefix] - 日志前缀
   */
  static warn(message: string, prefix: string = 'WARN'): void {
    console.warn(`[${this.colors.yellow}${prefix}${this.colors.reset}] ${message}`)
  }

  /**
   * 打印错误日志
   * @param {string} message - 日志消息
   * @param {string} [prefix] - 日志前缀
   */
  static error(message: string, prefix: string = 'ERROR'): void {
    console.error(`[${this.colors.red}${prefix}${this.colors.reset}] ${message}`)
  }

  /**
   * 打印成功日志
   * @param {string} message - 日志消息
   * @param {string} [prefix] - 日志前缀
   */
  static success(message: string, prefix: string = 'SUCCESS'): void {
    console.log(`[${this.colors.green}${prefix}${this.colors.reset}] ${message}`)
  }
}
